package com.zh.work.util.plateform;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * code is far away from bug with the animal protecting
 * ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * 　　┃　　　┃神兽保佑
 * 　　┃　　　┃代码无BUG！
 * 　　┃　　　┗━━━┓
 * 　　┃　　　　　　　┣┓
 * 　　┃　　　　　　　┏┛
 * 　　┗┓┓┏━┳┓┏┛
 * 　　　┃┫┫　┃┫┫
 * 　　　┗┻┛　┗┻┛
 *
 * @Description: json工具类
 * @Author: Liard
 * @Create in: 2020/6/11 14:25
 * @Version: 1.0.1
 */
public class JsonUtil {
    private static final Logger log = LoggerFactory.getLogger(JsonUtil.class);

    /**
     * 取指定值
     * @param json json字符串
     * @param cols 需要取的key,例: user.name
     * @return
     */
    public static String getColumns(String json, String...cols){
        int len = cols.length;
        String[][] keyWord = new String[len][];
        for (int i = 0; i < len; i++) {
            keyWord[i] = cols[i].split("\\.");
        }
        StringBuffer colVal = new StringBuffer();
        for (int i = 0; i < len; i++) {
            JSONObject jsonObject = JSON.parseObject(json);
            for (int j = 0; j < keyWord[i].length - 1; j++) {
                jsonObject = (JSONObject) jsonObject.get(keyWord[i][j]);
            }
            if (colVal.toString().length() < 1) {
                colVal.append(jsonObject.get(keyWord[i][keyWord[i].length - 1]).toString());
            } else {
                colVal.append("," + jsonObject.get(keyWord[i][keyWord[i].length - 1]).toString());
            }
            jsonObject = null;
        }
        return colVal.toString();
    }

    /**
     * 取列表值
     * @param json
     * @param arrayPath
     * @param cols
     * @return
     */
    public static String getListColumns(String json, String arrayPath, String... cols) {
        int len = cols.length;
        String[] keyWord = arrayPath.split("\\.");
        StringBuffer colVals = new StringBuffer();
        JSONObject jsonObject = JSON.parseObject(json);
        JSONArray jsonArray = null;
        for (int i = 0; i < keyWord.length - 1; i++) {
            jsonObject = (JSONObject) jsonObject.get(keyWord[i]);
        }
        jsonArray = jsonObject.getJSONArray(keyWord[keyWord.length - 1]);//得到对应的JSONArray对象
        for (int j = 0; j < jsonArray.size(); j++) {
            JSONObject jj = JSON.parseObject(jsonArray.get(j).toString());
            for (int i = 0; i < cols.length; i++) {
                if (0 == i)
                    colVals.append(jj.get(cols[i]).toString());
                else
                    colVals.append("," + jj.get(cols[i]).toString());
            }
        }
        return colVals.toString();
    }
}
